home *** CD-ROM | disk | FTP | other *** search
/ Total Network Tools 2002 / NextStepPublishing-TotalNetworkTools2002-Win95.iso / Archive / Misc Servers / Zope.exe / PYEXPATTEST.PY < prev    next >
Encoding:
Python Source  |  1998-08-18  |  1.8 KB  |  73 lines

  1. # Very simple test - Parse a file and print what happens
  2. import sys
  3. import pyexpat
  4. import sys
  5. import os
  6.  
  7. class Outputter:
  8.     def __init__(self, verbose=0):
  9.         self.startcount = 0
  10.         self.endcount = 0
  11.         self.cdatacount = 0
  12.         self.instcount = 0
  13.         self.verbose = verbose
  14.  
  15.     def startelt(self, name, attrs):
  16.         self.startcount = self.startcount + 1
  17.         if self.verbose:
  18.             print 'start', name
  19.             for i in range(0, len(attrs), 2):
  20.                 print 'attr', attrs[i], attrs[i+1]
  21.  
  22.     def endelt(self, name):
  23.         self.endcount = self.endcount + 1
  24.         if self.verbose:
  25.             print 'end', name
  26.  
  27.     def cdata(self, data):
  28.         self.cdatacount = self.cdatacount + 1
  29.         if self.verbose:
  30.             print 'cdata', data
  31.  
  32.     def inst(self, target, data):
  33.         self.instcount = self.instcount + 1
  34.         if self.verbose:
  35.             print 'inst', target, data
  36.  
  37. if len(sys.argv) > 1 and sys.argv[1] == '-v':
  38.     out = Outputter(verbose=1)
  39.     del sys.argv[1]
  40. else:
  41.     out = Outputter()
  42. if len(sys.argv) != 2:
  43.     if os.name == 'mac':
  44.         import macfs
  45.         fss, ok = macfs.StandardGetFile()
  46.         if not ok: sys.exit(0)
  47.         sys.argv.append(fss.as_pathname())
  48.     else:
  49.         print 'Usage: pyexpattest [-v] inputfile'
  50.         sys.exit(1)
  51.     
  52. parser = pyexpat.ParserCreate()
  53. parser.StartElementHandler = out.startelt
  54. parser.EndElementHandler = out.endelt
  55. parser.CharacterDataHandler = out.cdata
  56. parser.ProcessingInstructionHandler = out.inst
  57.  
  58. data = open(sys.argv[1]).read()
  59.  
  60. rv = parser.Parse(data, 1)
  61.  
  62. print 'Parser returned', rv
  63. if rv == 0:
  64.     print '** Error', parser.ErrorCode
  65.     print '** Line', parser.ErrorLineNumber
  66.     print '** Column', parser.ErrorColumnNumber
  67.     print '** Byte', parser.ErrorByteIndex
  68. print 'Summary of XML parser upcalls:'
  69. print 'start elements:', out.startcount
  70. print 'end elements:', out.endcount
  71. print 'character data:', out.cdatacount
  72. print 'processing instructions:', out.instcount
  73.